package br.com.sistema.persistencia.dao.permissao;

import javax.persistence.EntityManager;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;

import br.com.framework.client.permissao.entidade.Usuario;
import br.com.framework.client.persistencia.GenericDAOImpl;

public class UsuarioDAO extends GenericDAOImpl<Usuario> {

	public UsuarioDAO(EntityManager em) {
		super.setEntityManager(em);
	}

	public Integer getIdUsuarioCadastradoPorLogin(String login) {
		Usuario usuario = new Usuario();
		usuario.setLogin(login);
		Session session = (Session) this.getEntityManager().getDelegate();
		Example example = this.criarExemplo(usuario);
		example.enableLike(MatchMode.EXACT);
		Criteria criteria = session.createCriteria(usuario.getClass()).add(example);
		criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
		usuario = (Usuario) criteria.uniqueResult();
		return usuario == null ? null : usuario.getId();
	}

	public Integer getIdGrupo(String login, String senha) {
		Usuario usuario = new Usuario();
		usuario.setLogin(login);
		usuario.setSenha(senha);
		Session session = (Session) this.getEntityManager().getDelegate();
		Example example = this.criarExemplo(usuario);
		example.enableLike(MatchMode.EXACT);
		Criteria criteria = session.createCriteria(usuario.getClass()).add(example);
		criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
		usuario = (Usuario) criteria.uniqueResult();
		return usuario == null ? null : usuario.getGrupo().getId();
	}

}
